Software developers often use continuous integration and delivery (CI/CD) pipelines to deliver code to web hosting environments and/or other cloud computing platforms. These pipelines are usually specific to a single application and executed using a CI/CD tool like Jenkins, Circle CI, or TeamCity. These tools may perform similar functions, but may do so using specific and/or proprietary code. In addition, many applications depend upon specific versions of software in order to be built, tested, and deployed. These dependencies must exist wherever a CI/CD tool is used to automate these operations. Accordingly, if a developer wishes to use a new CI/CD tool, they must rewrite the much of the pipeline code and ensure all of an application's dependencies are met in order to achieve the same level of functionality.
An example pipeline development and/or deployment process is as follows. A developer writes pipeline code encapsulated in one or more files that are tailored for a CI/CD platform (e.g., Jenkinsfile, circle.yml, .drone.yml, etc.). The files are sent to a build server that uses a specific CI/CD platform. The build server maintains a separate set of software to support each pipeline, for example including CI/CD platform instances, build automation software, compilers, code analysis tools, deployment tools, web browsers, etc. Every pipeline deployed by the build server has its own set of this software. If the pipeline is migrated to a different CI/CD platform, a new file must be written, and the new build server must deploy a new set of software to support the pipeline.